package com.hotel.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.hotel.entity.RoomType;
import com.hotel.dto.RoomTypeDTO;
import com.hotel.vo.RoomTypeVO;

import java.util.List;
import java.util.Map;

/**
 * 房间类型服务接口
 */
public interface RoomTypeService extends IService<RoomType> {
    
    /**
     * 分页查询房间类型列表
     */
    Page<RoomTypeVO> getRoomTypePage(int current, int size, String keyword, String status);
    
    /**
     * 根据ID获取房间类型详情
     */
    RoomTypeVO getRoomTypeById(Long id);
    
    /**
     * 创建房间类型
     */
    boolean createRoomType(RoomTypeDTO roomTypeDTO);
    
    /**
     * 更新房间类型信息
     */
    boolean updateRoomType(Long id, RoomTypeDTO roomTypeDTO);
    
    /**
     * 删除房间类型
     */
    boolean deleteRoomType(Long id);
    
    /**
     * 根据名称查询房间类型
     */
    RoomType getRoomTypeByName(String name);
    
    /**
     * 获取所有启用的房间类型
     */
    List<RoomTypeVO> getEnabledRoomTypes();
    
    /**
     * 更新房间类型状态
     */
    boolean updateRoomTypeStatus(Long id, String status);
    
    /**
     * 获取房间类型统计信息
     */
    Map<String, Object> getRoomTypeStats();
    
    /**
     * 获取房间类型房间数量分布
     */
    List<Map<String, Object>> getRoomTypeRoomCount();
    
    /**
     * 检查房间类型是否被使用
     */
    boolean isRoomTypeInUse(Long roomTypeId);
    
    /**
     * 获取房间类型价格历史
     */
    List<Map<String, Object>> getRoomTypePriceHistory(Long roomTypeId);
}